home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / ImageCodec.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  42.3 KB  |  1,095 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        ImageCodec.p
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 3.0
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT ImageCodec;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __IMAGECODEC__}
  27. {$SETC __IMAGECODEC__ := 1}
  28.  
  29. {$I+}
  30. {$SETC ImageCodecIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __MACTYPES__}
  34. {$I MacTypes.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __QUICKDRAW__}
  37. {$I Quickdraw.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __IMAGECOMPRESSION__}
  40. {$I ImageCompression.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __COMPONENTS__}
  43. {$I Components.p}
  44. {$ENDC}
  45. {$IFC UNDEFINED __MOVIES__}
  46. {$I Movies.p}
  47. {$ENDC}
  48. {$IFC UNDEFINED __GXTYPES__}
  49. {$I GXTypes.p}
  50. {$ENDC}
  51.  
  52.  
  53. {$PUSH}
  54. {$ALIGN MAC68K}
  55. {$LibExport+}
  56.  
  57.  
  58. {    codec capabilities flags    }
  59.  
  60. CONST
  61.     codecCanScale                = $00000001;
  62.     codecCanMask                = $00000002;
  63.     codecCanMatte                = $00000004;
  64.     codecCanTransform            = $00000008;
  65.     codecCanTransferMode        = $00000010;
  66.     codecCanCopyPrev            = $00000020;
  67.     codecCanSpool                = $00000040;
  68.     codecCanClipVertical        = $00000080;
  69.     codecCanClipRectangular        = $00000100;
  70.     codecCanRemapColor            = $00000200;
  71.     codecCanFastDither            = $00000400;
  72.     codecCanSrcExtract            = $00000800;
  73.     codecCanCopyPrevComp        = $00001000;
  74.     codecCanAsync                = $00002000;
  75.     codecCanMakeMask            = $00004000;
  76.     codecCanShift                = $00008000;
  77.     codecCanAsyncWhen            = $00010000;
  78.     codecCanShieldCursor        = $00020000;
  79.     codecCanManagePrevBuffer    = $00040000;
  80.     codecHasVolatileBuffer        = $00080000;
  81.     codecWantsRegionMask        = $00100000;
  82.     codecImageBufferIsOnScreen    = $00200000;
  83.     codecWantsDestinationPixels    = $00400000;
  84.     codecWantsSpecialScaling    = $00800000;
  85.     codecHandlesInputs            = $01000000;
  86.     codecCanDoIndirectSurface    = $02000000;
  87.     codecIsSequenceSensitive    = $04000000;
  88.     codecRequiresOffscreen        = $08000000;
  89.     codecRequiresMaskBits        = $10000000;
  90.     codecCanRemapResolution        = $20000000;
  91.     codecIsDirectToScreenOnly    = $40000000;
  92.     codecCanLockSurface            = $80000000;
  93.  
  94.  
  95. TYPE
  96.     CodecCapabilitiesPtr = ^CodecCapabilities;
  97.     CodecCapabilities = RECORD
  98.         flags:                    LONGINT;
  99.         wantedPixelSize:        INTEGER;
  100.         extendWidth:            INTEGER;
  101.         extendHeight:            INTEGER;
  102.         bandMin:                INTEGER;
  103.         bandInc:                INTEGER;
  104.         pad:                    INTEGER;
  105.         time:                    UInt32;
  106.     END;
  107.  
  108. {    codec condition flags    }
  109.  
  110. CONST
  111.     codecConditionFirstBand        = $00000001;
  112.     codecConditionLastBand        = $00000002;
  113.     codecConditionFirstFrame    = $00000004;
  114.     codecConditionNewDepth        = $00000008;
  115.     codecConditionNewTransform    = $00000010;
  116.     codecConditionNewSrcRect    = $00000020;
  117.     codecConditionNewMask        = $00000040;
  118.     codecConditionNewMatte        = $00000080;
  119.     codecConditionNewTransferMode = $00000100;
  120.     codecConditionNewClut        = $00000200;
  121.     codecConditionNewAccuracy    = $00000400;
  122.     codecConditionNewDestination = $00000800;
  123.     codecConditionFirstScreen    = $00001000;
  124.     codecConditionDoCursor        = $00002000;
  125.     codecConditionCatchUpDiff    = $00004000;
  126.     codecConditionMaskMayBeChanged = $00008000;
  127.     codecConditionToBuffer        = $00010000;
  128.     codecConditionCodecChangedMask = $80000000;
  129.  
  130.  
  131.     codecInfoResourceType        = 'cdci';                        {  codec info resource type  }
  132.     codecInterfaceVersion        = 2;                            {  high word returned in component GetVersion  }
  133.  
  134.  
  135. TYPE
  136.     CDSequenceDataSourceQueueEntryPtr = ^CDSequenceDataSourceQueueEntry;
  137.     CDSequenceDataSourceQueueEntry = RECORD
  138.         nextBusy:                Ptr;
  139.         descSeed:                LONGINT;
  140.         dataDesc:                Handle;
  141.         data:                    Ptr;
  142.         dataSize:                LONGINT;
  143.         useCount:                LONGINT;
  144.         frameTime:                TimeValue;
  145.         frameDuration:            TimeValue;
  146.         timeScale:                TimeValue;
  147.     END;
  148.  
  149.     CDSequenceDataSourcePtr = ^CDSequenceDataSource;
  150.     CDSequenceDataSource = RECORD
  151.         recordSize:                LONGINT;
  152.         next:                    Ptr;
  153.         seqID:                    ImageSequence;
  154.         sourceID:                ImageSequenceDataSource;
  155.         sourceType:                OSType;
  156.         sourceInputNumber:        LONGINT;
  157.         dataPtr:                Ptr;
  158.         dataDescription:        Handle;
  159.         changeSeed:                LONGINT;
  160.         transferProc:            ICMConvertDataFormatUPP;
  161.         transferRefcon:            Ptr;
  162.         dataSize:                LONGINT;
  163.                                                                         {  fields available in QT 3 and later  }
  164.         dataQueue:                QHdrPtr;                                {  queue of CDSequenceDataSourceQueueEntry structures }
  165.         originalDataPtr:        Ptr;
  166.         originalDataSize:        LONGINT;
  167.         originalDataDescription: Handle;
  168.         originalDataDescriptionSeed: LONGINT;
  169.     END;
  170.  
  171.     ICMFrameTimeInfoPtr = ^ICMFrameTimeInfo;
  172.     ICMFrameTimeInfo = RECORD
  173.         startTime:                wide;
  174.         scale:                    LONGINT;
  175.         duration:                LONGINT;
  176.     END;
  177.  
  178.     CodecCompressParamsPtr = ^CodecCompressParams;
  179.     CodecCompressParams = RECORD
  180.         sequenceID:                ImageSequence;                            {  precompress,bandcompress  }
  181.         imageDescription:        ImageDescriptionHandle;                    {  precompress,bandcompress  }
  182.         data:                    Ptr;
  183.         bufferSize:                LONGINT;
  184.         frameNumber:            LONGINT;
  185.         startLine:                LONGINT;
  186.         stopLine:                LONGINT;
  187.         conditionFlags:            LONGINT;
  188.         callerFlags:            CodecFlags;
  189.         capabilities:            CodecCapabilitiesPtr;                    {  precompress,bandcompress  }
  190.         progressProcRecord:        ICMProgressProcRecord;
  191.         completionProcRecord:    ICMCompletionProcRecord;
  192.         flushProcRecord:        ICMFlushProcRecord;
  193.         srcPixMap:                PixMap;                                    {  precompress,bandcompress  }
  194.         prevPixMap:                PixMap;
  195.         spatialQuality:            CodecQ;
  196.         temporalQuality:        CodecQ;
  197.         similarity:                Fixed;
  198.         dataRateParams:            DataRateParamsPtr;
  199.         reserved:                LONGINT;
  200.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  201.         majorSourceChangeSeed:    UInt16;
  202.         minorSourceChangeSeed:    UInt16;
  203.         sourceData:                CDSequenceDataSourcePtr;
  204.                                                                         {  The following fields only exit for QuickTime 2.5 and greater  }
  205.         preferredPacketSizeInBytes: LONGINT;
  206.                                                                         {  The following fields only exit for QuickTime 3.0 and greater  }
  207.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  208.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  209.     END;
  210.  
  211.     CodecDecompressParamsPtr = ^CodecDecompressParams;
  212.     CodecDecompressParams = RECORD
  213.         sequenceID:                ImageSequence;                            {  predecompress,banddecompress  }
  214.         imageDescription:        ImageDescriptionHandle;                    {  predecompress,banddecompress  }
  215.         data:                    Ptr;
  216.         bufferSize:                LONGINT;
  217.         frameNumber:            LONGINT;
  218.         startLine:                LONGINT;
  219.         stopLine:                LONGINT;
  220.         conditionFlags:            LONGINT;
  221.         callerFlags:            CodecFlags;
  222.         capabilities:            CodecCapabilitiesPtr;                    {  predecompress,banddecompress  }
  223.         progressProcRecord:        ICMProgressProcRecord;
  224.         completionProcRecord:    ICMCompletionProcRecord;
  225.         dataProcRecord:            ICMDataProcRecord;
  226.         port:                    CGrafPtr;                                {  predecompress,banddecompress  }
  227.         dstPixMap:                PixMap;                                    {  predecompress,banddecompress  }
  228.         maskBits:                BitMapPtr;
  229.         mattePixMap:            PixMapPtr;
  230.         srcRect:                Rect;                                    {  predecompress,banddecompress  }
  231.         matrix:                    MatrixRecordPtr;                        {  predecompress,banddecompress  }
  232.         accuracy:                CodecQ;                                    {  predecompress,banddecompress  }
  233.         transferMode:            INTEGER;                                {  predecompress,banddecompress  }
  234.         frameTime:                ICMFrameTimePtr;                        {  banddecompress  }
  235.         reserved:                ARRAY [0..0] OF LONGINT;
  236.                                                                         {  The following fields only exist for QuickTime 2.0 and greater  }
  237.         matrixFlags:            SInt8;                                    {  high bit set if 2x resize  }
  238.         matrixType:                SInt8;
  239.         dstRect:                Rect;                                    {  only valid for simple transforms  }
  240.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  241.         majorSourceChangeSeed:    UInt16;
  242.         minorSourceChangeSeed:    UInt16;
  243.         sourceData:                CDSequenceDataSourcePtr;
  244.         maskRegion:                RgnHandle;
  245.                                                                         {  The following fields only exist for QuickTime 2.5 and greater  }
  246.         wantedDestinationPixelTypes: ^OSTypePtr;                        {  Handle to 0-terminated list of OSTypes  }
  247.         screenFloodMethod:        LONGINT;
  248.         screenFloodValue:        LONGINT;
  249.         preferredOffscreenPixelSize: INTEGER;
  250.                                                                         {  The following fields only exist for QuickTime 3.0 and greater  }
  251.         syncFrameTime:            ICMFrameTimeInfoPtr;                    {  banddecompress  }
  252.         needUpdateOnTimeChange:    BOOLEAN;                                {  banddecompress  }
  253.         enableBlackLining:        BOOLEAN;
  254.         needUpdateOnSourceChange: BOOLEAN;                                {  band decompress  }
  255.         pad:                    BOOLEAN;
  256.         unused:                    LONGINT;
  257.         finalDestinationPort:    CGrafPtr;
  258.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  259.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  260.     END;
  261.  
  262.  
  263. CONST
  264.     matrixFlagScale2x            = $00000080;
  265.     matrixFlagScale1x            = $00000040;
  266.     matrixFlagScaleHalf            = $00000020;
  267.  
  268.     kScreenFloodMethodNone        = 0;
  269.     kScreenFloodMethodKeyColor    = 1;
  270.     kScreenFloodMethodAlpha        = 2;
  271.  
  272.     kFlushLastQueuedFrame        = 0;
  273.     kFlushFirstQueuedFrame        = 1;
  274.  
  275.     kNewImageGWorldErase        = $00000001;
  276.  
  277.  
  278. TYPE
  279.     ImageSubCodecDecompressCapabilitiesPtr = ^ImageSubCodecDecompressCapabilities;
  280.     ImageSubCodecDecompressCapabilities = RECORD
  281.         recordSize:                LONGINT;                                {  sizeof(ImageSubCodecDecompressCapabilities) }
  282.         decompressRecordSize:    LONGINT;                                {  size of your codec's decompress record }
  283.         canAsync:                BOOLEAN;                                {  default true }
  284.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  285.     END;
  286.  
  287.  
  288. CONST
  289.     kCodecFrameTypeUnknown        = 0;
  290.     kCodecFrameTypeKey            = 1;
  291.     kCodecFrameTypeDifference    = 2;
  292.     kCodecFrameTypeDroppableDifference = 3;
  293.  
  294.  
  295. TYPE
  296.     ImageSubCodecDecompressRecordPtr = ^ImageSubCodecDecompressRecord;
  297.     ImageSubCodecDecompressRecord = RECORD
  298.         baseAddr:                Ptr;
  299.         rowBytes:                LONGINT;
  300.         codecData:                Ptr;
  301.         progressProcRecord:        ICMProgressProcRecord;
  302.         dataProcRecord:            ICMDataProcRecord;
  303.         userDecompressRecord:    Ptr;                                    {  pointer to codec-specific per-band data }
  304.         frameType:                SInt8;
  305.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  306.     END;
  307.  
  308. {  name of parameters or effect -- placed in root container, required  }
  309.  
  310. CONST
  311.     kParameterTitleName            = 'name';
  312.     kParameterTitleID            = 1;
  313.  
  314. {  codec sub-type of parameters or effect -- placed in root container, required  }
  315.     kParameterWhatName            = 'what';
  316.     kParameterWhatID            = 1;
  317.  
  318. {  effect version -- placed in root container, optional, but recommended  }
  319.     kParameterVersionName        = 'vers';
  320.     kParameterVersionID            = 1;
  321.  
  322. {  is effect repeatable -- placed in root container, optional, default is TRUE }
  323.     kParameterRepeatableName    = 'pete';
  324.     kParameterRepeatableID        = 1;
  325.  
  326.     kParameterRepeatableTrue    = 1;
  327.     kParameterRepeatableFalse    = 0;
  328.  
  329. {  substitution codec in case effect is missing -- placed in root container, recommended  }
  330.     kParameterAlternateCodecName = 'subs';
  331.     kParameterAlternateCodecID    = 1;
  332.  
  333. {  maximum number of sources -- placed in root container, required  }
  334.     kParameterSourceCountName    = 'srcs';
  335.     kParameterSourceCountID        = 1;
  336.  
  337.  
  338.     kParameterDependencyName    = 'deep';
  339.     kParameterDependencyID        = 1;
  340.  
  341.     kParameterListDependsUponColorProfiles = 'prof';
  342.     kParameterListDependsUponFonts = 'font';
  343.  
  344.  
  345. TYPE
  346.     ParameterDependancyRecordPtr = ^ParameterDependancyRecord;
  347.     ParameterDependancyRecord = RECORD
  348.         dependCount:            LONGINT;
  349.         depends:                ARRAY [0..0] OF OSType;
  350.     END;
  351.  
  352. {
  353.    enumeration list in container -- placed in root container, optional unless used by a
  354.    parameter in the list
  355. }
  356.  
  357. CONST
  358.     kParameterEnumList            = 'enum';
  359.  
  360.  
  361. TYPE
  362.     EnumValuePairPtr = ^EnumValuePair;
  363.     EnumValuePair = RECORD
  364.         value:                    LONGINT;
  365.         name:                    Str255;
  366.     END;
  367.  
  368.     EnumListRecordPtr = ^EnumListRecord;
  369.     EnumListRecord = RECORD
  370.         enumCount:                LONGINT;                                {  number of enumeration items to follow }
  371.         values:                    ARRAY [0..0] OF EnumValuePair;            {  values and names for them, packed  }
  372.     END;
  373.  
  374. {  atom type of parameter }
  375.  
  376. CONST
  377.     kParameterAtomTypeAndID        = 'type';
  378.  
  379.     kNoAtom                        = 'none';                        {  atom type for no data got/set }
  380.     kAtomNoFlags                = $00000000;
  381.     kAtomNotInterpolated        = $00000001;                    {  atom can never be interpolated }
  382.     kAtomInterpolateIsOptional    = $00000002;                    {  atom can be interpolated, but it is an advanced user operation }
  383.  
  384.  
  385. TYPE
  386.     ParameterAtomTypeAndIDPtr = ^ParameterAtomTypeAndID;
  387.     ParameterAtomTypeAndID = RECORD
  388.         atomType:                QTAtomType;                                {  type of atom this data comes from/goes into }
  389.         atomID:                    QTAtomID;                                {  ID of atom this data comes from/goes into }
  390.         atomFlags:                LONGINT;                                {  options for this atom }
  391.         atomName:                Str255;                                    {  name of this value type }
  392.     END;
  393.  
  394. {  data type of a parameter }
  395.  
  396. CONST
  397.     kParameterDataType            = 'data';
  398.  
  399.     kParameterTypeDataLong        = 2;                            {  integer value }
  400.     kParameterTypeDataFixed        = 3;                            {  fixed point value }
  401.     kParameterTypeDataRGBValue    = 8;                            {  RGBColor data }
  402.     kParameterTypeDataDouble    = 11;                            {  IEEE 64 bit floating point value }
  403.     kParameterTypeDataText        = 'text';                        {  editable text item }
  404.     kParameterTypeDataEnum        = 'enum';                        {  enumerated lookup value }
  405.     kParameterTypeDataBitField    = 'bool';                        {  bit field value (something that holds boolean(s)) }
  406.     kParameterTypeDataImage        = 'imag';                        {  reference to an image via Picture data }
  407.  
  408.  
  409. TYPE
  410.     ParameterDataTypePtr = ^ParameterDataType;
  411.     ParameterDataType = RECORD
  412.         dataType:                OSType;                                    {  type of data this item is stored as }
  413.     END;
  414.  
  415. {
  416.    alternate (optional) data type -- main data type always required.  
  417.    Must be modified or deleted when modifying main data type.
  418.    Main data type must be modified when alternate is modified.
  419. }
  420.  
  421. CONST
  422.     kParameterAlternateDataType    = 'alt1';
  423.     kParameterTypeDataColorValue = 'cmlr';                        {  CMColor data (supported on machines with ColorSync) }
  424.     kParameterTypeDataCubic        = 'cubi';                        {  cubic bezier(s) (no built-in support) }
  425.     kParameterTypeDataNURB        = 'nurb';                        {  nurb(s) (no built-in support) }
  426.  
  427.  
  428. TYPE
  429.     ParameterAlternateDataEntryPtr = ^ParameterAlternateDataEntry;
  430.     ParameterAlternateDataEntry = RECORD
  431.         dataType:                OSType;                                    {  type of data this item is stored as }
  432.         alternateAtom:            QTAtomType;                                {  where to store }
  433.     END;
  434.  
  435.     ParameterAlternateDataTypePtr = ^ParameterAlternateDataType;
  436.     ParameterAlternateDataType = RECORD
  437.         numEntries:                LONGINT;
  438.         entries:                ARRAY [0..0] OF ParameterAlternateDataEntry;
  439.     END;
  440.  
  441. {  legal values for the parameter }
  442.  
  443. CONST
  444.     kParameterDataRange            = 'rang';
  445.  
  446.     kNoMinimumLongFixed            = $7FFFFFFF;                    {  ignore minimum/maxiumum values }
  447.     kNoMaximumLongFixed            = $80000000;
  448.     kNoScaleLongFixed            = 0;                            {  don't perform any scaling of value }
  449.     kNoPrecision                = -1;                            {  allow as many digits as format }
  450.  
  451. {  'text' }
  452.  
  453. TYPE
  454.     StringRangeRecordPtr = ^StringRangeRecord;
  455.     StringRangeRecord = RECORD
  456.         maxChars:                LONGINT;                                {  maximum length of string }
  457.         maxLines:                LONGINT;                                {  number of editing lines to use (1 typical, 0 to default) }
  458.     END;
  459.  
  460. {  'long' }
  461.     LongRangeRecordPtr = ^LongRangeRecord;
  462.     LongRangeRecord = RECORD
  463.         minValue:                LONGINT;                                {  no less than this }
  464.         maxValue:                LONGINT;                                {  no more than this }
  465.         scaleValue:                LONGINT;                                {  muliply content by this going in, divide going out }
  466.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  467.     END;
  468.  
  469. {  'enum' }
  470.     EnumRangeRecordPtr = ^EnumRangeRecord;
  471.     EnumRangeRecord = RECORD
  472.         enumID:                    LONGINT;                                {  'enum' list in root container to search within }
  473.     END;
  474.  
  475. {  'fixd' }
  476.     FixedRangeRecordPtr = ^FixedRangeRecord;
  477.     FixedRangeRecord = RECORD
  478.         minValue:                Fixed;                                    {  no less than this }
  479.         maxValue:                Fixed;                                    {  no more than this }
  480.         scaleValue:                Fixed;                                    {  muliply content by this going in, divide going out }
  481.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  482.     END;
  483.  
  484. {  'doub' }
  485. {  'bool'     }
  486.     BooleanRangeRecordPtr = ^BooleanRangeRecord;
  487.     BooleanRangeRecord = RECORD
  488.         maskValue:                LONGINT;                                {  value to mask on/off to set/clear the boolean }
  489.     END;
  490.  
  491. {  'rgb ' }
  492.     RGBRangeRecordPtr = ^RGBRangeRecord;
  493.     RGBRangeRecord = RECORD
  494.         minColor:                RGBColor;
  495.         maxColor:                RGBColor;
  496.     END;
  497.  
  498. {  'imag' }
  499.  
  500. CONST
  501.     kParameterImageNoFlags        = 0;
  502.  
  503.  
  504. TYPE
  505.     ImageRangeRecordPtr = ^ImageRangeRecord;
  506.     ImageRangeRecord = RECORD
  507.         imageFlags:                LONGINT;
  508.     END;
  509.  
  510. {  union of all of the above }
  511. {  UI behavior of a parameter }
  512.  
  513. CONST
  514.     kParameterDataBehavior        = 'ditl';
  515.  
  516.                                                                 {  items edited via typing }
  517.     kParameterItemEditText        = 'edit';                        {  edit text box }
  518.     kParameterItemEditLong        = 'long';                        {  long number editing box }
  519.     kParameterItemEditFixed        = 'fixd';                        {  fixed point number editing box }
  520.     kParameterItemEditDouble    = 'doub';                        {  double number editing box }
  521.                                                                 {  items edited via control(s) }
  522.     kParameterItemPopUp            = 'popu';                        {  pop up value for enum types }
  523.     kParameterItemRadioCluster    = 'radi';                        {  radio cluster for enum types }
  524.     kParameterItemCheckBox        = 'chex';                        {  check box for booleans }
  525.     kParameterItemControl        = 'cntl';                        {  item controlled via a standard control of some type }
  526.                                                                 {  special user items }
  527.     kParameterItemLine            = 'line';                        {  line }
  528.     kParameterItemColorPicker    = 'pick';                        {  color swatch & picker }
  529.     kParameterItemGroupDivider    = 'divi';                        {  start of a new group of items }
  530.     kParameterItemStaticText    = 'stat';                        {  display "parameter name" as static text }
  531.     kParameterItemDragImage        = 'imag';                        {  allow image display, along with drag and drop }
  532.                                                                 {  flags valid for lines and groups }
  533.     kGraphicsNoFlags            = $00000000;                    {  no options for graphics }
  534.     kGraphicsFlagsGray            = $00000001;                    {  draw lines with gray }
  535.                                                                 {  flags valid for groups }
  536.     kGroupNoFlags                = $00000000;                    {  no options for group -- may be combined with graphics options                         }
  537.     kGroupAlignText                = $00010000;                    {  edit text items in group have the same size }
  538.     kGroupSurroundBox            = $00020000;                    {  group should be surrounded with a box }
  539.     kGroupMatrix                = $00040000;                    {  side-by-side arrangement of group is okay }
  540.     kGroupNoName                = $00080000;                    {  name of group should not be displayed above box }
  541.                                                                 {  flags valid for popup/radiocluster/checkbox/control }
  542.     kDisableControl                = $00000001;
  543.     kDisableWhenNotEqual        = $00000001;
  544.     kDisableWhenEqual            = $00000011;
  545.     kDisableWhenLessThan        = $00000021;
  546.     kDisableWhenGreaterThan        = $00000031;                    {  flags valid for popups }
  547.     kPopupStoreAsString            = $00010000;
  548.  
  549.  
  550. TYPE
  551.     ControlBehaviorsPtr = ^ControlBehaviors;
  552.     ControlBehaviors = RECORD
  553.         groupID:                QTAtomID;                                {  group under control of this item }
  554.         controlValue:            LONGINT;                                {  control value for comparison purposes }
  555.     END;
  556.  
  557.     ParameterDataBehaviorPtr = ^ParameterDataBehavior;
  558.     ParameterDataBehavior = RECORD
  559.         behaviorType:            OSType;
  560.         behaviorFlags:            LONGINT;
  561.         CASE INTEGER OF
  562.         0: (
  563.             controls:            ControlBehaviors;
  564.             );
  565.     END;
  566.  
  567. {  higher level purpose of a parameter or set of parameters }
  568.  
  569. CONST
  570.     kParameterDataUsage            = 'use ';
  571.  
  572.     kParameterUsagePixels        = 'pixl';
  573.     kParameterUsageRectangle    = 'rect';
  574.     kParameterUsagePoint        = 'xy  ';
  575.     kParameterUsage3DPoint        = 'xyz ';
  576.     kParameterUsageDegrees        = 'degr';
  577.     kParameterUsageRadians        = 'rads';
  578.     kParameterUsagePercent        = 'pcnt';
  579.     kParameterUsageSeconds        = 'secs';
  580.     kParameterUsageMilliseconds    = 'msec';
  581.     kParameterUsageMicroseconds    = 'µsec';
  582.     kParameterUsage3by3Matrix    = '3by3';
  583.  
  584.  
  585. TYPE
  586.     ParameterDataUsagePtr = ^ParameterDataUsage;
  587.     ParameterDataUsage = RECORD
  588.         usageType:                OSType;                                    {  higher level purpose of the data or group }
  589.     END;
  590.  
  591. {  default value(s) for a parameter }
  592.  
  593. CONST
  594.     kParameterDataDefaultItem    = 'dflt';
  595.  
  596. { atoms that help to fill in data within the info window }
  597.     kParameterInfoLongName        = '©nam';
  598.     kParameterInfoCopyright        = '©cpy';
  599.     kParameterInfoDescription    = '©inf';
  600.     kParameterInfoWindowTitle    = '©wnt';
  601.     kParameterInfoPicture        = '©pix';
  602.     kParameterInfoManufacturer    = '©man';
  603.     kParameterInfoIDs            = 1;
  604.  
  605. { flags for ImageCodecValidateParameters }
  606.     kParameterValidationNoFlags    = $00000000;
  607.     kParameterValidationFinalValidation = $00000001;
  608.  
  609.  
  610. TYPE
  611.     QTParameterValidationOptions        = LONGINT;
  612. {  QTAtomTypes for atoms in image compressor settings containers }
  613.  
  614. CONST
  615.     kImageCodecSettingsFieldCount = 'fiel';                        {  Number of fields (UInt8)  }
  616.     kImageCodecSettingsFieldOrdering = 'fdom';                    {  Ordering of fields (UInt8) }
  617.     kImageCodecSettingsFieldOrderingF1F2 = 1;
  618.     kImageCodecSettingsFieldOrderingF2F1 = 2;
  619.  
  620.  
  621. TYPE
  622. {$IFC TYPED_FUNCTION_POINTERS}
  623.     ImageCodecMPDrawBandProcPtr = FUNCTION(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  624. {$ELSEC}
  625.     ImageCodecMPDrawBandProcPtr = ProcPtr;
  626. {$ENDC}
  627.  
  628.     ImageCodecMPDrawBandUPP = UniversalProcPtr;
  629.  
  630. CONST
  631.     uppImageCodecMPDrawBandProcInfo = $000003F0;
  632.  
  633. FUNCTION NewImageCodecMPDrawBandProc(userRoutine: ImageCodecMPDrawBandProcPtr): ImageCodecMPDrawBandUPP;
  634.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  635.     INLINE $2E9F;
  636.     {$ENDC}
  637.  
  638. FUNCTION CallImageCodecMPDrawBandProc(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord; userRoutine: ImageCodecMPDrawBandUPP): ComponentResult;
  639.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  640.     INLINE $205F, $4E90;
  641.     {$ENDC}
  642. {    codec selectors 0-127 are reserved by Apple }
  643. {    codec selectors 128-191 are subtype specific }
  644. {    codec selectors 192-255 are vendor specific }
  645. {    codec selectors 256-32767 are available for general use }
  646. {    negative selectors are reserved by the Component Manager }
  647. FUNCTION ImageCodecGetCodecInfo(ci: ComponentInstance; VAR info: CodecInfo): ComponentResult;
  648.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  649.     INLINE $2F3C, $0004, $0000, $7000, $A82A;
  650.     {$ENDC}
  651. FUNCTION ImageCodecGetCompressionTime(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ; VAR time: UInt32): ComponentResult;
  652.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  653.     INLINE $2F3C, $0016, $0001, $7000, $A82A;
  654.     {$ENDC}
  655. FUNCTION ImageCodecGetMaxCompressionSize(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; VAR size: LONGINT): ComponentResult;
  656.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  657.     INLINE $2F3C, $0012, $0002, $7000, $A82A;
  658.     {$ENDC}
  659. FUNCTION ImageCodecPreCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  660.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  661.     INLINE $2F3C, $0004, $0003, $7000, $A82A;
  662.     {$ENDC}
  663. FUNCTION ImageCodecBandCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  664.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  665.     INLINE $2F3C, $0004, $0004, $7000, $A82A;
  666.     {$ENDC}
  667. FUNCTION ImageCodecPreDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  668.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  669.     INLINE $2F3C, $0004, $0005, $7000, $A82A;
  670.     {$ENDC}
  671. FUNCTION ImageCodecBandDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  672.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  673.     INLINE $2F3C, $0004, $0006, $7000, $A82A;
  674.     {$ENDC}
  675. FUNCTION ImageCodecBusy(ci: ComponentInstance; seq: ImageSequence): ComponentResult;
  676.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  677.     INLINE $2F3C, $0004, $0007, $7000, $A82A;
  678.     {$ENDC}
  679. FUNCTION ImageCodecGetCompressedImageSize(ci: ComponentInstance; desc: ImageDescriptionHandle; data: Ptr; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; VAR dataSize: LONGINT): ComponentResult;
  680.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  681.     INLINE $2F3C, $0014, $0008, $7000, $A82A;
  682.     {$ENDC}
  683. FUNCTION ImageCodecGetSimilarity(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; desc: ImageDescriptionHandle; data: Ptr; VAR similarity: Fixed): ComponentResult;
  684.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  685.     INLINE $2F3C, $0014, $0009, $7000, $A82A;
  686.     {$ENDC}
  687. FUNCTION ImageCodecTrimImage(ci: ComponentInstance; Desc: ImageDescriptionHandle; inData: Ptr; inBufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; outData: Ptr; outBufferSize: LONGINT; flushProc: ICMFlushProcRecordPtr; VAR trimRect: Rect; progressProc: ICMProgressProcRecordPtr): ComponentResult;
  688.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  689.     INLINE $2F3C, $0024, $000A, $7000, $A82A;
  690.     {$ENDC}
  691. FUNCTION ImageCodecRequestSettings(ci: ComponentInstance; settings: Handle; VAR rp: Rect; filterProc: ModalFilterUPP): ComponentResult;
  692.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  693.     INLINE $2F3C, $000C, $000B, $7000, $A82A;
  694.     {$ENDC}
  695. FUNCTION ImageCodecGetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  696.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  697.     INLINE $2F3C, $0004, $000C, $7000, $A82A;
  698.     {$ENDC}
  699. FUNCTION ImageCodecSetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  700.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  701.     INLINE $2F3C, $0004, $000D, $7000, $A82A;
  702.     {$ENDC}
  703. FUNCTION ImageCodecFlush(ci: ComponentInstance): ComponentResult;
  704.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  705.     INLINE $2F3C, $0000, $000E, $7000, $A82A;
  706.     {$ENDC}
  707. FUNCTION ImageCodecSetTimeCode(ci: ComponentInstance; timeCodeFormat: UNIV Ptr; timeCodeTime: UNIV Ptr): ComponentResult;
  708.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  709.     INLINE $2F3C, $0008, $000F, $7000, $A82A;
  710.     {$ENDC}
  711. FUNCTION ImageCodecIsImageDescriptionEquivalent(ci: ComponentInstance; newDesc: ImageDescriptionHandle; VAR equivalent: BOOLEAN): ComponentResult;
  712.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  713.     INLINE $2F3C, $0008, $0010, $7000, $A82A;
  714.     {$ENDC}
  715. FUNCTION ImageCodecNewMemory(ci: ComponentInstance; VAR data: Ptr; dataSize: Size; dataUse: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  716.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  717.     INLINE $2F3C, $0014, $0011, $7000, $A82A;
  718.     {$ENDC}
  719. FUNCTION ImageCodecDisposeMemory(ci: ComponentInstance; data: Ptr): ComponentResult;
  720.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  721.     INLINE $2F3C, $0004, $0012, $7000, $A82A;
  722.     {$ENDC}
  723. FUNCTION ImageCodecHitTestData(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: BOOLEAN): ComponentResult;
  724.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  725.     INLINE $2F3C, $0014, $0013, $7000, $A82A;
  726.     {$ENDC}
  727. FUNCTION ImageCodecNewImageBufferMemory(ci: ComponentInstance; VAR params: CodecDecompressParams; flags: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  728.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  729.     INLINE $2F3C, $0010, $0014, $7000, $A82A;
  730.     {$ENDC}
  731. FUNCTION ImageCodecExtractAndCombineFields(ci: ComponentInstance; fieldFlags: LONGINT; data1: UNIV Ptr; dataSize1: LONGINT; desc1: ImageDescriptionHandle; data2: UNIV Ptr; dataSize2: LONGINT; desc2: ImageDescriptionHandle; outputData: UNIV Ptr; VAR outDataSize: LONGINT; descOut: ImageDescriptionHandle): ComponentResult;
  732.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  733.     INLINE $2F3C, $0028, $0015, $7000, $A82A;
  734.     {$ENDC}
  735. FUNCTION ImageCodecGetMaxCompressionSizeWithSources(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; sourceData: CDSequenceDataSourcePtr; VAR size: LONGINT): ComponentResult;
  736.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  737.     INLINE $2F3C, $0016, $0016, $7000, $A82A;
  738.     {$ENDC}
  739. FUNCTION ImageCodecSetTimeBase(ci: ComponentInstance; base: UNIV Ptr): ComponentResult;
  740.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  741.     INLINE $2F3C, $0004, $0017, $7000, $A82A;
  742.     {$ENDC}
  743. FUNCTION ImageCodecSourceChanged(ci: ComponentInstance; majorSourceChangeSeed: UInt32; minorSourceChangeSeed: UInt32; sourceData: CDSequenceDataSourcePtr; VAR flagsOut: LONGINT): ComponentResult;
  744.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  745.     INLINE $2F3C, $0010, $0018, $7000, $A82A;
  746.     {$ENDC}
  747. FUNCTION ImageCodecFlushFrame(ci: ComponentInstance; flags: UInt32): ComponentResult;
  748.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  749.     INLINE $2F3C, $0004, $0019, $7000, $A82A;
  750.     {$ENDC}
  751. FUNCTION ImageCodecGetSettingsAsText(ci: ComponentInstance; VAR text: Handle): ComponentResult;
  752.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  753.     INLINE $2F3C, $0004, $001A, $7000, $A82A;
  754.     {$ENDC}
  755. FUNCTION ImageCodecGetParameterListHandle(ci: ComponentInstance; VAR parameterDescriptionHandle: Handle): ComponentResult;
  756.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  757.     INLINE $2F3C, $0004, $001B, $7000, $A82A;
  758.     {$ENDC}
  759. FUNCTION ImageCodecGetParameterList(ci: ComponentInstance; VAR parameterDescription: QTAtomContainer): ComponentResult;
  760.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  761.     INLINE $2F3C, $0004, $001C, $7000, $A82A;
  762.     {$ENDC}
  763. FUNCTION ImageCodecCreateStandardParameterDialog(ci: ComponentInstance; parameterDescription: QTAtomContainer; parameters: QTAtomContainer; dialogOptions: QTParameterDialogOptions; existingDialog: DialogPtr; existingUserItem: INTEGER; VAR createdDialog: QTParameterDialog): ComponentResult;
  764.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  765.     INLINE $2F3C, $0016, $001D, $7000, $A82A;
  766.     {$ENDC}
  767. FUNCTION ImageCodecIsStandardParameterDialogEvent(ci: ComponentInstance; VAR pEvent: EventRecord; createdDialog: QTParameterDialog): ComponentResult;
  768.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  769.     INLINE $2F3C, $0008, $001E, $7000, $A82A;
  770.     {$ENDC}
  771. FUNCTION ImageCodecDismissStandardParameterDialog(ci: ComponentInstance; createdDialog: QTParameterDialog): ComponentResult;
  772.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  773.     INLINE $2F3C, $0004, $001F, $7000, $A82A;
  774.     {$ENDC}
  775. FUNCTION ImageCodecStandardParameterDialogDoAction(ci: ComponentInstance; createdDialog: QTParameterDialog; action: LONGINT; params: UNIV Ptr): ComponentResult;
  776.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  777.     INLINE $2F3C, $000C, $0020, $7000, $A82A;
  778.     {$ENDC}
  779. FUNCTION ImageCodecNewImageGWorld(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR newGW: GWorldPtr; flags: LONGINT): ComponentResult;
  780.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  781.     INLINE $2F3C, $000C, $0021, $7000, $A82A;
  782.     {$ENDC}
  783. FUNCTION ImageCodecDisposeImageGWorld(ci: ComponentInstance; theGW: GWorldPtr): ComponentResult;
  784.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  785.     INLINE $2F3C, $0004, $0022, $7000, $A82A;
  786.     {$ENDC}
  787. FUNCTION ImageCodecHitTestDataWithFlags(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: LONGINT; hitFlags: LONGINT): ComponentResult;
  788.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  789.     INLINE $2F3C, $0018, $0023, $7000, $A82A;
  790.     {$ENDC}
  791. FUNCTION ImageCodecValidateParameters(ci: ComponentInstance; parameters: QTAtomContainer; validationFlags: QTParameterValidationOptions; errorString: StringPtr): ComponentResult;
  792.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  793.     INLINE $2F3C, $000C, $0024, $7000, $A82A;
  794.     {$ENDC}
  795. FUNCTION ImageCodecGetBaseMPWorkFunction(ci: ComponentInstance; VAR workFunction: ComponentMPWorkFunctionUPP; VAR refCon: UNIV Ptr; drawProc: ImageCodecMPDrawBandUPP; drawProcRefCon: UNIV Ptr): ComponentResult;
  796.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  797.     INLINE $2F3C, $0010, $0025, $7000, $A82A;
  798.     {$ENDC}
  799. FUNCTION ImageCodecPreflight(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  800.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  801.     INLINE $2F3C, $0004, $0200, $7000, $A82A;
  802.     {$ENDC}
  803. FUNCTION ImageCodecInitialize(ci: ComponentInstance; VAR cap: ImageSubCodecDecompressCapabilities): ComponentResult;
  804.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  805.     INLINE $2F3C, $0004, $0201, $7000, $A82A;
  806.     {$ENDC}
  807. FUNCTION ImageCodecBeginBand(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR drp: ImageSubCodecDecompressRecord; flags: LONGINT): ComponentResult;
  808.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  809.     INLINE $2F3C, $000C, $0202, $7000, $A82A;
  810.     {$ENDC}
  811. FUNCTION ImageCodecDrawBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  812.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  813.     INLINE $2F3C, $0004, $0203, $7000, $A82A;
  814.     {$ENDC}
  815. FUNCTION ImageCodecEndBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord; result: OSErr; flags: LONGINT): ComponentResult;
  816.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  817.     INLINE $2F3C, $000A, $0204, $7000, $A82A;
  818.     {$ENDC}
  819. FUNCTION ImageCodecQueueStarting(ci: ComponentInstance): ComponentResult;
  820.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  821.     INLINE $2F3C, $0000, $0205, $7000, $A82A;
  822.     {$ENDC}
  823. FUNCTION ImageCodecQueueStopping(ci: ComponentInstance): ComponentResult;
  824.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  825.     INLINE $2F3C, $0000, $0206, $7000, $A82A;
  826.     {$ENDC}
  827. FUNCTION ImageCodecDroppingFrame(ci: ComponentInstance; {CONST}VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  828.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  829.     INLINE $2F3C, $0004, $0207, $7000, $A82A;
  830.     {$ENDC}
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843. CONST
  844.     kMotionJPEGTag                = 'mjpg';
  845.     kJPEGQuantizationTablesImageDescriptionExtension = 'mjqt';
  846.     kJPEGHuffmanTablesImageDescriptionExtension = 'mjht';
  847.     kFieldInfoImageDescriptionExtension = 'fiel';                {  image description extension describing the field count and field orderings }
  848.  
  849.     kFieldOrderUnknown            = 0;
  850.     kFieldsStoredF1F2DisplayedF1F2 = 1;
  851.     kFieldsStoredF1F2DisplayedF2F1 = 2;
  852.     kFieldsStoredF2F1DisplayedF1F2 = 5;
  853.     kFieldsStoredF2F1DisplayedF2F1 = 6;
  854.  
  855.  
  856. TYPE
  857.     MotionJPEGApp1MarkerPtr = ^MotionJPEGApp1Marker;
  858.     MotionJPEGApp1Marker = RECORD
  859.         unused:                    LONGINT;
  860.         tag:                    LONGINT;
  861.         fieldSize:                LONGINT;
  862.         paddedFieldSize:        LONGINT;
  863.         offsetToNextField:        LONGINT;
  864.         qTableOffset:            LONGINT;
  865.         huffmanTableOffset:        LONGINT;
  866.         sofOffset:                LONGINT;
  867.         sosOffset:                LONGINT;
  868.         soiOffset:                LONGINT;
  869.     END;
  870.  
  871.     FieldInfoImageDescriptionExtensionPtr = ^FieldInfoImageDescriptionExtension;
  872.     FieldInfoImageDescriptionExtension = PACKED RECORD
  873.         fieldCount:                UInt8;
  874.         fieldOrderings:            UInt8;
  875.     END;
  876.  
  877.  
  878. FUNCTION QTPhotoSetSampling(codec: ComponentInstance; yH: INTEGER; yV: INTEGER; cbH: INTEGER; cbV: INTEGER; crH: INTEGER; crV: INTEGER): ComponentResult;
  879.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  880.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  881.     {$ENDC}
  882. FUNCTION QTPhotoSetRestartInterval(codec: ComponentInstance; restartInterval: UInt16): ComponentResult;
  883.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  884.     INLINE $2F3C, $0002, $0101, $7000, $A82A;
  885.     {$ENDC}
  886. FUNCTION QTPhotoDefineHuffmanTable(codec: ComponentInstance; componentNumber: INTEGER; isDC: BOOLEAN; VAR lengthCounts: UInt8; VAR values: UInt8): ComponentResult;
  887.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  888.     INLINE $2F3C, $000C, $0102, $7000, $A82A;
  889.     {$ENDC}
  890. FUNCTION QTPhotoDefineQuantizationTable(codec: ComponentInstance; componentNumber: INTEGER; VAR table: UInt8): ComponentResult;
  891.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  892.     INLINE $2F3C, $0006, $0103, $7000, $A82A;
  893.     {$ENDC}
  894.  
  895.  
  896.  
  897.  
  898. { source identifier -- placed in root container of description, one or more required }
  899.  
  900. CONST
  901.     kEffectSourceName            = 'src ';
  902.  
  903.  
  904. { source type -- placed in the input map to identify the source kind }
  905.     kEffectDataSourceType        = 'dtst';
  906.  
  907. {  default effect types }
  908.     kEffectRawSource            = 0;                            {  the source is raw image data }
  909.     kEffectGenericType            = 'geff';                        {  generic effect for combining others }
  910.  
  911.  
  912. TYPE
  913.     EffectSourcePtr = ^EffectSource;
  914.     SourceDataPtr = ^SourceData;
  915.     SourceData = RECORD
  916.         CASE INTEGER OF
  917.         0: (
  918.             image:                CDSequenceDataSourcePtr;
  919.             );
  920.         1: (
  921.             effect:                EffectSourcePtr;
  922.             );
  923.     END;
  924.  
  925.  
  926.     EffectSource = RECORD
  927.         effectType:                LONGINT;                                {  type of effect or kEffectRawSource if raw ICM data }
  928.         data:                    Ptr;                                    {  track data for this effect }
  929.         source:                    SourceData;                                {  source/effect pointers }
  930.         next:                    EffectSourcePtr;                        {  the next source for the parent effect }
  931.     END;
  932.  
  933.     EffectsFrameParamsPtr = ^EffectsFrameParams;
  934.     EffectsFrameParams = RECORD
  935.         frameTime:                ICMFrameTimeRecord;                        {  timing data }
  936.         effectDuration:            LONGINT;                                {  the duration of a single effect frame }
  937.         doAsync:                BOOLEAN;                                {  set to true if the effect can go async }
  938.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  939.         source:                    EffectSourcePtr;                        {  ptr to the source input tree }
  940.         refCon:                    Ptr;                                    {  storage for the effect }
  941.     END;
  942.  
  943.  
  944.  
  945. FUNCTION ImageCodecEffectSetup(effect: ComponentInstance; VAR p: CodecDecompressParams): ComponentResult;
  946.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  947.     INLINE $2F3C, $0004, $0300, $7000, $A82A;
  948.     {$ENDC}
  949. FUNCTION ImageCodecEffectBegin(effect: ComponentInstance; VAR p: CodecDecompressParams; ePtr: EffectsFrameParamsPtr): ComponentResult;
  950.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  951.     INLINE $2F3C, $0008, $0301, $7000, $A82A;
  952.     {$ENDC}
  953. FUNCTION ImageCodecEffectRenderFrame(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  954.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  955.     INLINE $2F3C, $0004, $0302, $7000, $A82A;
  956.     {$ENDC}
  957. FUNCTION ImageCodecEffectConvertEffectSourceToFormat(effect: ComponentInstance; sourceToConvert: EffectSourcePtr; requestedDesc: ImageDescriptionHandle): ComponentResult;
  958.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  959.     INLINE $2F3C, $0008, $0303, $7000, $A82A;
  960.     {$ENDC}
  961. FUNCTION ImageCodecEffectCancel(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  962.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  963.     INLINE $2F3C, $0004, $0304, $7000, $A82A;
  964.     {$ENDC}
  965. FUNCTION ImageCodecEffectGetSpeed(effect: ComponentInstance; parameters: QTAtomContainer; VAR pFPS: Fixed): ComponentResult;
  966.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  967.     INLINE $2F3C, $0008, $0305, $7000, $A82A;
  968.     {$ENDC}
  969.  
  970.  
  971.  
  972. { curve atom types and data structures }
  973.  
  974. CONST
  975.     kCurvePathAtom                = 'path';
  976.     kCurveEndAtom                = 'zero';
  977.     kCurveAntialiasControlAtom    = 'anti';
  978.     kCurveAntialiasOff            = 0;
  979.     kCurveAntialiasOn            = $FFFFFFFF;
  980.     kCurveFillTypeAtom            = 'fill';
  981.     kCurvePenThicknessAtom        = 'pent';
  982.     kCurveMiterLimitAtom        = 'mitr';
  983.     kCurveJoinAttributesAtom    = 'join';
  984.     kCurveMinimumDepthAtom        = 'mind';
  985.     kCurveDepthAlwaysOffscreenMask = $80000000;
  986.     kCurveTransferModeAtom        = 'xfer';
  987.     kCurveGradientAngleAtom        = 'angl';
  988.     kCurveGradientRadiusAtom    = 'radi';
  989.     kCurveGradientOffsetAtom    = 'cent';
  990.  
  991.     kCurveARGBColorAtom            = 'argb';
  992.  
  993.  
  994. TYPE
  995.     ARGBColorPtr = ^ARGBColor;
  996.     ARGBColor = RECORD
  997.         alpha:                    UInt16;
  998.         red:                    UInt16;
  999.         green:                    UInt16;
  1000.         blue:                    UInt16;
  1001.     END;
  1002.  
  1003.  
  1004. CONST
  1005.     kCurveGradientRecordAtom    = 'grad';
  1006.  
  1007.  
  1008. TYPE
  1009.     GradientColorRecordPtr = ^GradientColorRecord;
  1010.     GradientColorRecord = RECORD
  1011.         thisColor:                ARGBColor;
  1012.         endingPercentage:        Fixed;
  1013.     END;
  1014.  
  1015.     GradientColorPtr                    = ^GradientColorRecord;
  1016.  
  1017. CONST
  1018.     kCurveGradientTypeAtom        = 'grdt';
  1019.  
  1020. { currently supported gradient types }
  1021.     kLinearGradient                = 0;
  1022.     kCircularGradient            = 1;
  1023.  
  1024.  
  1025. TYPE
  1026.     GradientType                        = LONGINT;
  1027. FUNCTION CurveGetLength(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; VAR wideLength: wide): ComponentResult;
  1028.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1029.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  1030.     {$ENDC}
  1031. FUNCTION CurveLengthToPoint(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; length: Fixed; VAR location: FixedPoint; VAR tangent: FixedPoint): ComponentResult;
  1032.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1033.     INLINE $2F3C, $0014, $0101, $7000, $A82A;
  1034.     {$ENDC}
  1035. FUNCTION CurveNewPath(effect: ComponentInstance; VAR pPath: Handle): ComponentResult;
  1036.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1037.     INLINE $2F3C, $0004, $0102, $7000, $A82A;
  1038.     {$ENDC}
  1039. FUNCTION CurveCountPointsInPath(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; VAR pCount: UInt32): ComponentResult;
  1040.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1041.     INLINE $2F3C, $000C, $0103, $7000, $A82A;
  1042.     {$ENDC}
  1043. FUNCTION CurveGetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; VAR ptIsOnPath: BOOLEAN): ComponentResult;
  1044.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1045.     INLINE $2F3C, $0014, $0104, $7000, $A82A;
  1046.     {$ENDC}
  1047. FUNCTION CurveInsertPointIntoPath(effect: ComponentInstance; VAR aPoint: gxPoint; thePath: Handle; contourIndex: UInt32; pointIndex: UInt32; ptIsOnPath: BOOLEAN): ComponentResult;
  1048.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1049.     INLINE $2F3C, $0012, $0105, $7000, $A82A;
  1050.     {$ENDC}
  1051. FUNCTION CurveSetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; ptIsOnPath: BOOLEAN): ComponentResult;
  1052.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1053.     INLINE $2F3C, $0012, $0106, $7000, $A82A;
  1054.     {$ENDC}
  1055. FUNCTION CurveGetNearestPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; VAR thePoint: FixedPoint; VAR contourIndex: UInt32; VAR pointIndex: UInt32; VAR theDelta: Fixed): ComponentResult;
  1056.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1057.     INLINE $2F3C, $0014, $0107, $7000, $A82A;
  1058.     {$ENDC}
  1059. FUNCTION CurvePathPointToLength(ci: ComponentInstance; VAR aPath: gxPaths; startDist: Fixed; endDist: Fixed; VAR thePoint: FixedPoint; VAR pLength: Fixed): ComponentResult;
  1060.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1061.     INLINE $2F3C, $0014, $0108, $7000, $A82A;
  1062.     {$ENDC}
  1063. FUNCTION CurveCreateVectorStream(effect: ComponentInstance; VAR pStream: Handle): ComponentResult;
  1064.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1065.     INLINE $2F3C, $0004, $0109, $7000, $A82A;
  1066.     {$ENDC}
  1067. FUNCTION CurveAddAtomToVectorStream(effect: ComponentInstance; atomType: OSType; atomSize: Size; pAtomData: UNIV Ptr; vectorStream: Handle): ComponentResult;
  1068.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1069.     INLINE $2F3C, $0010, $010A, $7000, $A82A;
  1070.     {$ENDC}
  1071. FUNCTION CurveAddPathAtomToVectorStream(effect: ComponentInstance; pathData: Handle; vectorStream: Handle): ComponentResult;
  1072.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1073.     INLINE $2F3C, $0008, $010B, $7000, $A82A;
  1074.     {$ENDC}
  1075. FUNCTION CurveAddZeroAtomToVectorStream(effect: ComponentInstance; vectorStream: Handle): ComponentResult;
  1076.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1077.     INLINE $2F3C, $0004, $010C, $7000, $A82A;
  1078.     {$ENDC}
  1079. FUNCTION CurveGetAtomDataFromVectorStream(effect: ComponentInstance; vectorStream: Handle; atomType: LONGINT; VAR dataSize: LONGINT; VAR dataPtr: Ptr): ComponentResult;
  1080.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1081.     INLINE $2F3C, $0010, $010D, $7000, $A82A;
  1082.     {$ENDC}
  1083.  
  1084. { UPP call backs }
  1085. {$ALIGN RESET}
  1086. {$POP}
  1087.  
  1088. {$SETC UsingIncludes := ImageCodecIncludes}
  1089.  
  1090. {$ENDC} {__IMAGECODEC__}
  1091.  
  1092. {$IFC NOT UsingIncludes}
  1093.  END.
  1094. {$ENDC}
  1095.